1. The Field of the Invention
The present invention relates to computing technology; and more specifically, to the network distribution of multiple data items in multiple responses while controlling which computing system manages context information for the communications.
2. Background and Related Art
Computing technology has transformed the way we work and play. Computing systems now take a wide variety of forms including desktop computers, laptop computers, tablet PCs, Personal Digital Assistants (PDAs), household devices and the like. In its most basic form, a computing system includes system memory and one or more processors. Software in the system memory may be executed by the processor to direct the other hardware of the computing system to perform desired functions.
Networking technologies enable computing systems to communicate even over vast distances, thereby expanding on computer functionality. For example, networking technologies enable such applications as e-mail, web browsing, file transfer, instant messaging, electronic whiteboarding, network collaboration, and the like.
Some networking applications involve the transfer of large amounts of information. For instance, one may desire to download a database that is several terabytes in size. Even over a high bandwidth network, this can take days. Even in fairly reliable network environments, there is a significant possibility that a network connection cannot be maintained for that entire period. If the connection is lost, often the entire data transfer must be reinitiated from the start.
One conventional method for improving the reliability and efficiency of large data transfers is to transfer the data one portion at a time in separate electronic messages. Sometimes, this may be accomplished automatically in response to a single request. However, to allow the data receiver some control over the data transfer process, the data receiver may submit a request for each electronic message that contains a portion of the overall data transfer. For example, a web site has large amounts of data associated with it including web pages, images, sound files, other multimedia, scripts or the like. The web browser will often submit separate requests for each of these data items. This technology will be referred to as “request-driven enumeration technology” in which collections of data items are “enumerated” one portion at a time in separate responses to separate requests.
In order to meet the expectations of the data receiver computing system, it is important for each request to be understood in its proper context. For example, suppose that fifty data items are to be transferred total, ten data items at a time in a session of five responses to five different requests. When the first request is submitted, it is important for the data provider to not just know the identity of the fifty data items, but to also know that this is the first request. That way, the data provider knows to transfer the first ten of the data items. When the second request is received, it is important for the data provider to know that the previous ten data items have already been provided. Otherwise, the data provider may provide the first ten items again. Therefore, the data provider must have proper context for a request in request-driven enumeration technologies. In this description and in the claims, a “context” for a request in a request-driven enumeration technology session is defined as any information needed or helpful for the data provider to know what portion of the data items to provide in response to the request.
Conventionally, responsibility for maintaining this context information is static. For example, the data provider may maintain session information for a large data transfer to a particular data receiver. This session information may include context information. In other conventional technologies, the data receiver maintains the context information. The context information is provided by the data provider to the data receiver. The data receiver then includes that context information in the next request for the next portion of the collection of data items. Regardless of which system is managing the context information, the responsibility for managing the context information is predetermined at the time the data transfer session is initiated. Furthermore, context management responsibility does not tend to shift over the session lifetime.
Whether it is advantageous for the data provider or the data receiver to maintain the context information depends on the surrounding circumstances. Many of these surrounding circumstances are highly dynamic. Accordingly, what would be advantageous are mechanisms for allowing the data provider computing system to have more flexibility and dynamic control over the division of labor between the data provider and the data receiver in managing the context information for a data transfer session.